package com.常用类.BigInteger_BigDecimal_超大数的处理;

import java.math.BigDecimal;

public class BigDecimal_ {
    /**
     * 当你需要保存精度非常高的小数时，double会损失精度；
     * 这里就可以用到BigDecimal来保存精度非常高的小数；
     * @param args
     */
    public static void main(String[] args) {
        double d = 9.11122223333666655558887779999999;
        System.out.println(d);  //精度损失严重；

       BigDecimal big1 = new BigDecimal("9.11122223333666655558887779999999");
        System.out.println(big1); //不会损失精度，

        BigDecimal big2 = new BigDecimal("9.11");

        BigDecimal add = big1.add(big2);//加法
        System.out.println(add);

        BigDecimal sub = big1.subtract(big2);//减法
        System.out.println(sub);

        BigDecimal mul = big1.multiply(big2);//乘法
        System.out.println(mul);

        /**
         * 重中之重：如果除法除不尽会爆出 Non-terminating decimal expansion 异常；
         * 如果除不尽就要用big1.divide(big2,BigDecimal.ROUND_CEILING);  保留与被除数一样的精度；
         */
        BigDecimal div = big1.divide(big2,BigDecimal.ROUND_CEILING);//
        System.out.println(div);
    }
}
